package testjeu;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.state.StateBasedGame;

/**
 * Main classe : gestion des différents states : 
 * - 1 : Menu principal 
 * - 2 : Jeu en cours 
 * - 3 : Fin du jeu
 * - 4 : Erreur détectée
 * 
 * TODO-LIST : 
 * 
 * X Déplacements fluides 
 * X Rotations fluides 
 * X Ennemis diagonales 
 * X Tir ennemis diagonal 
 * X Balles diagonales 
 * X BUG : Plusieurs tirs sur la même case ( passer de boolean à Int ) 
 * X Feu lors explosion monTank ( à tester 
 * X Mort contre obstacle 
 * X Empiler cartes 
 * X Menu d'accueil avec règles 
 * X Charger map suivante 
 * X Charger map par son code 
 * X Modifier les actions 
 * X Bug Sortie de la map 
 * X Voir tir des ennemis 
 * X Rajouter les actions en carte de base (map.png)
 * X Calcul du score ( par le temps et le nbre d'essais )
 * X Fin d'une map
 * X Fin d'une map
 * X Feu à durée de vie 
 * X Améliorer FIN
 * X Améliorer affichage du score ( loader directement font via awt )
 * X Nombres de maps sur le splash
 * 
 * - Musique et bouton couper son
 * - Bouton revenir au menu principal (+ afficher code)
 * 
 * - Nouvelle arme : Téléporteur 
 * - Nouvelle arme : Télécommande 
 * - Nouvelle arme : Saut ( franchissement )
 * - Nouvelle arme : Pont
 * 
 * @author YoTsumi
 */

public class Main extends StateBasedGame {

	/**
	 * Constructeur du jeu
	 */
	public Main() {
		super("Comsat 2008");
	}

	/**
	 * On liste les différentents éléments du jeu
	 * 
	 * @param container
	 */
	public void initStatesList(GameContainer container) {
		addState(new Menu());
		addState(new Jeu());
		addState(new Fin());
		addState(new Erreur());
	}

	/**
	 * Classe principale initialisant la fenêtre de jeu
	 * 
	 * @param argv
	 */
	public static void main(String[] argv) {
		try {
			AppGameContainer container = new AppGameContainer(new Main(), 892, 665, false);
			container.setSoundVolume(0.5f);
			container.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
